home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / aal / unaligned.h < prev   
C/C++ Source or Header  |  2006-01-09  |  1KB  |  41 lines

  1. /* Copyright (C) 2001-2005 by Hans Reiser, licensing governed by libaal/COPYING.
  2.  
  3.    unaligned.h -- libaal unalignment declaration. */
  4.  
  5. #ifdef HAVE_CONFIG_H
  6. #  include <config.h>
  7. #endif
  8.  
  9. #ifndef AAL_UNALIGNED_H
  10. #define AAL_UNALIGNED_H
  11.  
  12. /* unaligned access is allowed on cris, i386, ppc, ppc64, s390, x86_64 */
  13. #if defined(i386)    || defined (__i386__)   ||        \
  14.     defined(ppc)     || defined(__ppc__)     ||        \
  15.     defined(PPC)     || defined(__ppc)       ||        \
  16.     defined(__PPC__) || defined(__powerpc__) ||        \
  17.     defined(powerpc) || defined(__x86_64__)  ||        \
  18.     defined(__s390__) || defined(__cris__)
  19.  
  20. #define get_unaligned(ptr) (*(ptr))
  21. #define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))
  22.  
  23. #else
  24.  
  25. #define get_unaligned(ptr)                \
  26. ({                            \
  27.     __typeof__(*(ptr)) __tmp;            \
  28.     aal_memcpy(&__tmp, (ptr), sizeof(*(ptr)));    \
  29.     __tmp;                        \
  30. })
  31.  
  32. #define put_unaligned(val, ptr)                \
  33. ({                            \
  34.     __typeof__(*(ptr)) __tmp = (val);        \
  35.     aal_memcpy((ptr), &__tmp, sizeof(*(ptr)));    \
  36.     (void)0;                    \
  37. })
  38. #endif
  39.  
  40. #endif
  41.